#pragma once

#include "byte_tracker/algorithm_base.h"

#include <map>
#include <string>
#include <unordered_map>
#include <vector>

namespace perception::camera {

enum class ObjectMsgType {
    UNKNOWN = 0, // 未知
    CAR = 1, // 轿车
    VAN = 2, // 面包车
    MOTORCYCLE = 3, // 摩托车
    BOXTRUCK = 4, // 厢式货车
    TRUCK = 5, // 卡车
    BUS = 6, // 公交车
    PEDESTRIAN = 101, // 行人
    BICYCLE = 102, // 自行车
    TRICYCLE = 103, // 三轮车
    TRAFFIC_CONE = 104, // 锥桶
    TRIANGLE = 105, // 三角牌
    ANIMAL = 106 // 动物
};

const std::unordered_map<ObjectType, ObjectMsgType> objectTypeMapBevdetType = {
    { ObjectType::UNKNOWN, ObjectMsgType::UNKNOWN },
    { ObjectType::UNKNOWN_MOVABLE, ObjectMsgType::UNKNOWN },
    { ObjectType::UNKNOWN_UNMOVABLE, ObjectMsgType::UNKNOWN },
    { ObjectType::CAR, ObjectMsgType::CAR },
    { ObjectType::VAN, ObjectMsgType::VAN },
    { ObjectType::TRUCK, ObjectMsgType::TRUCK },
    { ObjectType::BUS, ObjectMsgType::BUS },
    { ObjectType::CYCLIST, ObjectMsgType::BICYCLE },
    { ObjectType::MOTORCYCLIST, ObjectMsgType::MOTORCYCLE },
    { ObjectType::TRICYCLIST, ObjectMsgType::TRICYCLE },
    { ObjectType::PEDESTRIAN, ObjectMsgType::PEDESTRIAN },
    { ObjectType::TRAFFICCONE, ObjectMsgType::TRAFFIC_CONE },
    { ObjectType::SAFETY_TRIANGLE, ObjectMsgType::TRIANGLE },
    { ObjectType::BARRIER_DELINEATOR, ObjectMsgType::UNKNOWN },
    { ObjectType::BARRIER_WATER, ObjectMsgType::UNKNOWN },
    { ObjectType::ANIMAL, ObjectMsgType::ANIMAL }
};

// MAX_OBJECT_TYPE = 15,

}